#######################################
#                                     #
#          KERNEL-KIT  (GPL v2)       #
#                                     #
#######################################      

THIS KIT COMES WITH ABSOLUTELY NO WARRANTY, USE ENTIRELY AT OWN RISK
NO RESPONSIBILITY ACCEPTED. YOU HAVE BEEN WARNED

If you build woofce kernels and are aware of improper settings, etc
You can provide suggestions or open pull requests to
fix a specific config or set of configs.

You can also help identify stuff that is not needed - unlikely to be used.
Stuff that shouldn't be built in to vmlinuz or stuff that is actually important.

The configs can be improved and you can help.

You might also want to share your builds for others to test..

---------------------------------------------------------------------------

ABOUT
-----
This kit is designed to make it easy to compile a kernel (v3+) for Puppy Linux.
The packages produced are compatible with FatDog (huge kernel).
See Barry's Blog .. bkhome.org/blog or woof-CE 
This kit assumes you are comfortable with shell scripts and command line usage.

DEPENDENCIES
------------
This kit is designed for Puppy Linux. A late model build is 
recommended, such as Slacko, tahrpup, xenialpup, Dpup-Exprimo, FatDog64
Be aware that for best results you should compile in a host 
distro which is compatible with the target distro.

REQUIRED:
gcc - for compilation
git - for aufs sources
mksquashfs - for compressing the kernel source sfs, will build without

CREDIT
------
BarryK, for inventing Puppy Linux,
Iguleder, the original designer of this kit, pemasu for input and bugfixes,
jamesbond for fatdog stuff
01micko - current version
various testers on the Murga-Linux/puppy forum

USAGE
-----
First, read & edit the build.conf file for your preferences
It is recommended to use a $custom_suffix and $package_name_suffix

Second, run "./build.sh"
The kernel source will download, aufs will be downloaded from git
The patches will be applied automatically and halt the script if 
there are failures.
The script will pause once all patches are applied so you 
can configure the kernel.
You can use:
1. make menuconfig [default] (ncurses based)
2. make gconfig (gtk based gui)
3. make xconfig (qt based gui)
4. make oldconfig 

Save it when done and continue.

Kernel headers are created, kernel compiles (takes a long time), kernel
source sfs is created, kernel pet package is NOT created BUT the 
correct directory structure is in place at dist/packages/linux_kernel*
to make a pet easily. Same with headers. 

New options in the build.conf file include choice of squashfs compression. 
Also number of jobs is supported - use with caution. Read comments in build.conf.

The kit can be cleaned with "./build.sh clean" which deletes everything except
for configs. Please manually check before obliterating your work!

Have fun!

-----------------------------------------------------------------------

TODO: fully support ARM arch

-----------------------------------------------------------------------
                               LINKS
-----------------------------------------------------------------------

Existing Linux Wireless Drivers
	https://wireless.wiki.kernel.org/en/users/drivers

UEFI (Unified Extensible Firmware Interface
	https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface

Kernels/Compilation/Traditional
	https://wiki.archlinux.org/index.php/Kernels/Compilation/Traditional

Linux Kernel Reading Guide
	http://www.linux.org/threads/linux-kernel-reading-guide.5384/

eCryptfs
	How to Set Up eCryptFS on Linux – The Manual Way
		http://www.systutorials.com/1638/setting-up-ecryptfs-in-linux/
	What kernel options do I need to enable to build eCryptfs?
		https://answers.launchpad.net/ecryptfs/+question/46285

Dm-crypt
	https://wiki.gentoo.org/wiki/Dm-crypt#Kernel_Configuration
	https://wiki.archlinux.org/index.php/Dm-crypt

-----------------------------------------------------------------------
                         AUFS GIT BRANCHES
-----------------------------------------------------------------------
aufs3: git://git.code.sf.net/p/aufs/aufs3-standalone.git
=====
  remotes/origin/aufs3.0
  remotes/origin/aufs3.1
  remotes/origin/aufs3.10
  remotes/origin/aufs3.10.x
  remotes/origin/aufs3.11
  remotes/origin/aufs3.12
  remotes/origin/aufs3.12.31+
  remotes/origin/aufs3.12.x
  remotes/origin/aufs3.13
  remotes/origin/aufs3.14
  remotes/origin/aufs3.14.21+
  remotes/origin/aufs3.14.40+
  remotes/origin/aufs3.15
  remotes/origin/aufs3.16
  remotes/origin/aufs3.17
  remotes/origin/aufs3.18
  remotes/origin/aufs3.18.1+
  remotes/origin/aufs3.18.25+
  remotes/origin/aufs3.19
  remotes/origin/aufs3.2
  remotes/origin/aufs3.2.x
  remotes/origin/aufs3.3
  remotes/origin/aufs3.4
  remotes/origin/aufs3.5
  remotes/origin/aufs3.6
  remotes/origin/aufs3.7
  remotes/origin/aufs3.8
  remotes/origin/aufs3.9
  remotes/origin/aufs3.x-rcN
  remotes/origin/master

aufs4: git://github.com/sfjro/aufs4-standalone.git
=====
  remotes/origin/aufs4.0
  remotes/origin/aufs4.1
  remotes/origin/aufs4.1.13+
  remotes/origin/aufs4.2
  remotes/origin/aufs4.3
  remotes/origin/aufs4.4
  remotes/origin/aufs4.5
  remotes/origin/aufs4.6
  remotes/origin/aufs4.7
  remotes/origin/aufs4.8
  remotes/origin/aufs4.9
  remotes/origin/aufs4.10
  remotes/origin/aufs4.x-rcN
  remotes/origin/master

#---------------------------

aufs-util: git://git.code.sf.net/p/aufs/aufs-util.git
=========
  remotes/origin/aufs3.0
  remotes/origin/aufs3.14
  remotes/origin/aufs3.18
  remotes/origin/aufs3.2
  remotes/origin/aufs3.9
  remotes/origin/aufs3.x-rcN
  remotes/origin/aufs4.0
  remotes/origin/aufs4.1
  remotes/origin/aufs4.4
  remotes/origin/aufs4.x-rcN
  remotes/origin/master

(NOTE: no comments past here)

================================     INFO      ================================

The 'huge' kernel builds require a number of drivers built into the kernel
image (vmlinuz in x86/x86_64; zImage, uImage or kernel.img in ARM). Things
that must be builtin are filesystems (ext2/3/4, f2fs, NTFS, FAT and others 
which you may want to support as a boot partition) , AUFS, NLS support, 
keyboard drivers and possibly others.
eg:
CONFIG_AUFS_FS=y
===============================================================================
